package com.shiliuzi.www.mapper;

import com.shiliuzi.www.pojo.bo.UserInfoBo;
import com.shiliuzi.www.pojo.dto.user.UserLoginSendDto;
import com.shiliuzi.www.pojo.dto.user.UserSelectDto;
import com.shiliuzi.www.pojo.dto.user.UserSetRoleDto;
import com.shiliuzi.www.pojo.dto.user.UserUpMemberDto;
import com.shiliuzi.www.pojo.po.Power;
import com.shiliuzi.www.pojo.po.User;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface MemberMapper {

    /**
     * 登陆查询用户是否为该工作室成员
     *
     * @param userLoginSendDto
     * @return
     */
    Integer userIsExist(UserLoginSendDto userLoginSendDto);

    /**
     * 成功登录后，获取用户信息
     *
     * @param number
     * @param email
     * @return
     */
    User getUserInfo(String number, String email);

    /**
     * 成功登录后，获取用户的权限
     * @param userInfoBo
     * @return
     */
    List<Power> getUserPower(UserInfoBo userInfoBo);

    /**
     *查询用户
     */
    List<User> selUser(User user);

    /**
     * 修改用户角色
     * @param userSetRoleDto
     * @return
     */
    Integer setMemberRole(UserSetRoleDto userSetRoleDto);

    /**
     * 查询上下级关系
     * @param userId
     * @param type
     * @return
     */
    List<User> selectUpMember(Integer userId, Integer type);

    /**
     * 设置上级
     * @param userUpMemberDto
     * @return
     */
    Integer setUpMember(UserUpMemberDto userUpMemberDto);

    /**
     * 设置上级时获取上级id
     * @param number
     * @return
     */
    Integer getUpMemberId(String number);

    /**
     * 获取某个用户的身份，进而判断是否可设置上下级关系
     * @param number
     * @return
     */
    Integer getMemberIdentity(String number);

    /**
     * 判断上级是否为改下级的下属
     * @param upNumber
     * @param minionNumber
     * @return
     */
    Integer judgeMemberUpLow(String upNumber, String minionNumber);
}